/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ipartek.formacion.gestformwww.modelo;

import com.ipartek.formacion.gestformwww.modelo.beans.CandConv;
import com.ipartek.formacion.gestformwww.modelo.beans.Candidato;
//import com.ipartek.formacion.gestformwww.modelo.beans.FiltroCandidato;
import com.ipartek.formacion.gestformwww.modelo.beans.Empresa;
import com.ipartek.formacion.gestformwww.modelo.beans.Estado;
import com.ipartek.formacion.gestformwww.modelo.beans.FiltroCandidato;
import com.ipartek.formacion.gestformwww.modelo.beans.Procedencia;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import com.ipartek.formacion.gestformwww.modelo.clases.DAOFactory;
import com.ipartek.formacion.gestformwww.modelo.interfaces.ICandidatoDAO;
import java.util.ArrayList;

/**
 *  Clase que agrupa los metodos de modelo Candidato y CandConv
 * @author Jon Mikel y Fran, Ekaitz
 */
public class ModeloCandidato {
    private DAOFactory factoria = null;

    public ModeloCandidato() {
        factoria = DAOFactory.getDAOFactory(DAOFactory.SQLSERVER);
    }       

    public CandConv buscarCandConv(int idCand, int IdConv) throws GestorFormacionExcepcion {
        return factoria.getICandConvDAO().buscarCandConv(idCand, IdConv);
    }
    public void insertarCandConv (CandConv candconv) throws GestorFormacionExcepcion{
        factoria.getICandConvDAO().insertarCandConv(candconv);
    }
    public void modificarCandConv(CandConv candconv) throws GestorFormacionExcepcion{
        factoria.getICandConvDAO().modificarCandConv(candconv);
    }
    public void eliminarCandConv(int idCand, int IdConv) throws GestorFormacionExcepcion{
        factoria.getICandConvDAO().eliminarCandConv(idCand, IdConv);
    }
    public ArrayList <Estado> listaEstados() throws GestorFormacionExcepcion{
        return factoria.getICandConvDAO().listaEstados();
    }
    public ArrayList <Empresa> listaEmpresas() throws GestorFormacionExcepcion{
        return factoria.getICandConvDAO().listaEmpresas();
    }
    public ArrayList <Procedencia> listaProcedencias() throws GestorFormacionExcepcion{
        return factoria.getICandConvDAO().listaProcedencias();
    }
     public void asignarCandidatoAConvocatoria(ArrayList candidatos, int conId) throws GestorFormacionExcepcion{
         factoria.getICandidatoDAO().asignarCandidatoAConvocatoria(candidatos, conId);
    }
    public int crearCandidato(Candidato candidato) throws GestorFormacionExcepcion{
        return factoria.getICandidatoDAO().crearCandidato(candidato);
    }    
    public void eliminarCandidato(int canId, int conId) throws GestorFormacionExcepcion{
        factoria.getICandidatoDAO().eliminarCandidato(canId, conId);
    }
    public void eliminarCandidato(ArrayList<Integer> aidCandidato, int idCon) throws GestorFormacionExcepcion {
        for (int i:aidCandidato){
            factoria.getICandidatoDAO().eliminarCandidato(i, idCon);
        }
    }
    public void eliminarNuevoCandidato(int canId) throws GestorFormacionExcepcion{
        factoria.getICandidatoDAO().eliminarNuevoCandidato(canId);
    }
    public void eliminarNuevoCandidato(ArrayList<Integer> aidCandidato) throws GestorFormacionExcepcion {
        for (int i:aidCandidato){
            factoria.getICandidatoDAO().eliminarNuevoCandidato(i);
        }
    }
    public ArrayList<Candidato> listarCandidatos(FiltroCandidato filtro) throws GestorFormacionExcepcion{
        return factoria.getICandidatoDAO().listarCandidatos(filtro);
    }

    public ArrayList<Candidato> mostrarCandidatos(FiltroCandidato filtro) throws GestorFormacionExcepcion{
        return factoria.getICandidatoDAO().mostrarCandidatos(filtro);
    }

    public int modificarCandidato(Candidato candidato) throws GestorFormacionExcepcion{
        return factoria.getICandidatoDAO().modificarCandidato(candidato);
    }
    
    public Candidato visualizarCandidato(int canId, int conId) throws GestorFormacionExcepcion{
        return factoria.getICandidatoDAO().visualizarCandidato(canId, conId);

    }

    public int contarCandidatos(FiltroCandidato filtro) throws GestorFormacionExcepcion{
        return factoria.getICandidatoDAO().contarCandidatos(filtro);
    }
    
    public boolean existecandidato(String nif) throws GestorFormacionExcepcion {
        ICandidatoDAO dao = factoria.getICandidatoDAO();
        boolean existe = dao.existecandidato(nif);
        return existe;
    }

    public Estado visualizarEstado(int idEstado) throws GestorFormacionExcepcion {
        return factoria.getIEstadoDAO().visualizarEstado(idEstado);
    }
    
    public Candidato getCandidato(int canId)throws GestorFormacionExcepcion {
        return factoria.getICandidatoDAO().getCandidato(canId);
    }
}
